<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>CANopenNode: SDO server/client</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">CANopenNode
   </div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('group__CO__STACK__CONFIG__SDO.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#define-members">Macros</a>  </div>
  <div class="headertitle">
<div class="title">SDO server/client<div class="ingroups"><a class="el" href="group__CO__CANopen__301.html">CANopen_301</a> &raquo; <a class="el" href="group__CO__driver.html">Driver</a> &raquo; <a class="el" href="group__CO__STACK__CONFIG.html">Stack configuration</a></div></div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga2928cc23dd27138821d48c2fb3e24222"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__STACK__CONFIG__SDO.html#ga2928cc23dd27138821d48c2fb3e24222">CO_CONFIG_SDO_SRV</a>&#160;&#160;&#160;(CO_CONFIG_SDO_SRV_SEGMENTED)</td></tr>
<tr class="memdesc:ga2928cc23dd27138821d48c2fb3e24222"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configuration of <a class="el" href="group__CO__SDOserver.html">SDO server</a>.  <a href="group__CO__STACK__CONFIG__SDO.html#ga2928cc23dd27138821d48c2fb3e24222">More...</a><br /></td></tr>
<tr class="separator:ga2928cc23dd27138821d48c2fb3e24222"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacad3d0d9060469aedcb9e058c1883375"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__STACK__CONFIG__SDO.html#gacad3d0d9060469aedcb9e058c1883375">CO_CONFIG_SDO_SRV_BUFFER_SIZE</a>&#160;&#160;&#160;32</td></tr>
<tr class="memdesc:gacad3d0d9060469aedcb9e058c1883375"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of the internal data buffer for the SDO server.  <a href="group__CO__STACK__CONFIG__SDO.html#gacad3d0d9060469aedcb9e058c1883375">More...</a><br /></td></tr>
<tr class="separator:gacad3d0d9060469aedcb9e058c1883375"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac8ee65cd62dbee2982f5304513402a57"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__STACK__CONFIG__SDO.html#gac8ee65cd62dbee2982f5304513402a57">CO_CONFIG_SDO_CLI</a>&#160;&#160;&#160;(0)</td></tr>
<tr class="memdesc:gac8ee65cd62dbee2982f5304513402a57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configuration of <a class="el" href="group__CO__SDOclient.html">SDO client</a>.  <a href="group__CO__STACK__CONFIG__SDO.html#gac8ee65cd62dbee2982f5304513402a57">More...</a><br /></td></tr>
<tr class="separator:gac8ee65cd62dbee2982f5304513402a57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga763b09ab827365e46f10234bd9c0acfd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__STACK__CONFIG__SDO.html#ga763b09ab827365e46f10234bd9c0acfd">CO_CONFIG_SDO_CLI_BUFFER_SIZE</a>&#160;&#160;&#160;32</td></tr>
<tr class="memdesc:ga763b09ab827365e46f10234bd9c0acfd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of the internal data buffer for the SDO client.  <a href="group__CO__STACK__CONFIG__SDO.html#ga763b09ab827365e46f10234bd9c0acfd">More...</a><br /></td></tr>
<tr class="separator:ga763b09ab827365e46f10234bd9c0acfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ga2928cc23dd27138821d48c2fb3e24222"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2928cc23dd27138821d48c2fb3e24222">&#9670;&nbsp;</a></span>CO_CONFIG_SDO_SRV</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CO_CONFIG_SDO_SRV&#160;&#160;&#160;(CO_CONFIG_SDO_SRV_SEGMENTED)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Configuration of <a class="el" href="group__CO__SDOserver.html">SDO server</a>. </p>
<p>Possible flags, can be ORed:</p><ul>
<li>CO_CONFIG_SDO_SRV_SEGMENTED - Enable SDO server segmented transfer.</li>
<li>CO_CONFIG_SDO_SRV_BLOCK - Enable SDO server block transfer. If set, then CO_CONFIG_SDO_SRV_SEGMENTED must also be set.</li>
<li><a class="el" href="group__CO__STACK__CONFIG__COMMON.html#gab55099df45bed12f182ef7c0c779dc14" title="Enable custom callback after CAN receive.">CO_CONFIG_FLAG_CALLBACK_PRE</a> - Enable custom callback after preprocessing received SDO CAN message. Callback is configured by <a class="el" href="group__CO__SDOserver.html#ga3eeea49e2fb36da22dc754c62b03a423" title="Initialize SDOrx callback function.">CO_SDOserver_initCallbackPre()</a>.</li>
<li><a class="el" href="group__CO__STACK__CONFIG__COMMON.html#ga9e84c3a9256f15246be7766a61096c2d" title="Enable calculation of timerNext_us variable.">CO_CONFIG_FLAG_TIMERNEXT</a> - Enable calculation of timerNext_us variable inside <a class="el" href="group__CO__SDOserver.html#ga360bc6aa1659a5572d4d1077d787433a" title="Process SDO communication.">CO_SDOserver_process()</a>.</li>
<li><a class="el" href="group__CO__STACK__CONFIG__COMMON.html#gaf0f46ccffdd156cc7c2d8774ecb2060d" title="Enable dynamic behaviour of Object Dictionary variables.">CO_CONFIG_FLAG_OD_DYNAMIC</a> - Enable dynamic configuration of additional SDO servers (Writing to object 0x1201+ re-configures the additional server). </li>
</ul>

</div>
</div>
<a id="gacad3d0d9060469aedcb9e058c1883375"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacad3d0d9060469aedcb9e058c1883375">&#9670;&nbsp;</a></span>CO_CONFIG_SDO_SRV_BUFFER_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CO_CONFIG_SDO_SRV_BUFFER_SIZE&#160;&#160;&#160;32</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Size of the internal data buffer for the SDO server. </p>
<p>If size is less than size of some variables in Object Dictionary, then data will be transferred to internal buffer in several segments. Minimum size is 8 or 899 (127*7) for block transfer. </p>

</div>
</div>
<a id="gac8ee65cd62dbee2982f5304513402a57"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac8ee65cd62dbee2982f5304513402a57">&#9670;&nbsp;</a></span>CO_CONFIG_SDO_CLI</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CO_CONFIG_SDO_CLI&#160;&#160;&#160;(0)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Configuration of <a class="el" href="group__CO__SDOclient.html">SDO client</a>. </p>
<p>Possible flags, can be ORed:</p><ul>
<li>CO_CONFIG_SDO_CLI_ENABLE - Enable SDO client.</li>
<li>CO_CONFIG_SDO_CLI_SEGMENTED - Enable SDO client segmented transfer.</li>
<li>CO_CONFIG_SDO_CLI_BLOCK - Enable SDO client block transfer. If set, then CO_CONFIG_SDO_CLI_SEGMENTED, CO_CONFIG_FIFO_ALT_READ and CO_CONFIG_FIFO_CRC16_CCITT must also be set.</li>
<li>CO_CONFIG_SDO_CLI_LOCAL - Enable local transfer, if Node-ID of the SDO server is the same as node-ID of the SDO client. (SDO client is the same device as SDO server.) Transfer data directly without communication on CAN.</li>
<li><a class="el" href="group__CO__STACK__CONFIG__COMMON.html#gab55099df45bed12f182ef7c0c779dc14" title="Enable custom callback after CAN receive.">CO_CONFIG_FLAG_CALLBACK_PRE</a> - Enable custom callback after preprocessing received SDO CAN message. Callback is configured by <a class="el" href="group__CO__SDOclient.html#ga4377eaecc3bd0a8320a2bbe1ef0ef776" title="Initialize SDOclient callback function.">CO_SDOclient_initCallbackPre()</a>.</li>
<li><a class="el" href="group__CO__STACK__CONFIG__COMMON.html#ga9e84c3a9256f15246be7766a61096c2d" title="Enable calculation of timerNext_us variable.">CO_CONFIG_FLAG_TIMERNEXT</a> - Enable calculation of timerNext_us variable inside <a class="el" href="group__CO__SDOclient.html#ga40f6e79592e1d587d02bbb4eaefa9489" title="Initiate SDO download communication.">CO_SDOclientDownloadInitiate()</a>, <a class="el" href="group__CO__SDOclient.html#gaab262f0a8d08ba023639a2c197d0943a" title="Process SDO download communication.">CO_SDOclientDownload()</a>, <a class="el" href="group__CO__SDOclient.html#ga3180f82563b3ed768fe7d3bd34fe1886" title="Initiate SDO upload communication.">CO_SDOclientUploadInitiate()</a>, <a class="el" href="group__CO__SDOclient.html#gab44dabaf3deb88ffcf7c4ef72300287d" title="Process SDO upload communication.">CO_SDOclientUpload()</a>.</li>
<li><a class="el" href="group__CO__STACK__CONFIG__COMMON.html#gaf0f46ccffdd156cc7c2d8774ecb2060d" title="Enable dynamic behaviour of Object Dictionary variables.">CO_CONFIG_FLAG_OD_DYNAMIC</a> - Enable dynamic configuration of SDO clients (Writing to object 0x1280+ re-configures the client). </li>
</ul>

</div>
</div>
<a id="ga763b09ab827365e46f10234bd9c0acfd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga763b09ab827365e46f10234bd9c0acfd">&#9670;&nbsp;</a></span>CO_CONFIG_SDO_CLI_BUFFER_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CO_CONFIG_SDO_CLI_BUFFER_SIZE&#160;&#160;&#160;32</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Size of the internal data buffer for the SDO client. </p>
<p>Circular buffer is used for SDO communication. it can be read or written between successive SDO calls. So size of the buffer can be lower than size of the actual size of data transferred. If only segmented transfer is used, then buffer size can be as low as 7 bytes, if data are read/written each cycle. If block transfer is used, buffer size should be set to at least 889 bytes, so maximum blksize can be used. In that case data should be read/written proper time between cycles. </p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Sat Sep 19 2020 10:03:20 for CANopenNode by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
  </ul>
</div>
</body>
</html>
